package com.example.jt_manager_service;

import com.example.jt_common.vo.ItemCatData;
import com.example.jt_common.vo.ItemCatResult;
import com.example.jt_manager_mapper.ItemCatMapper;
import com.example.jt_manager_pojo.ItemCat;
import com.example.jt_manager_pojo.ItemCatExample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class ItemCatServiceImpl implements ItemCatsService {

    @Autowired
    ItemCatMapper itemCatMapper;

    @Override
    public ItemCatResult getAllCats() {
        ItemCatExample itemCatExample=new ItemCatExample();
        //数据库中所有的分类数据
        List<ItemCat> itemCats = itemCatMapper.selectByExample(itemCatExample);

        Map<Long,List<ItemCat>> map = new HashMap<>();


        //将所有的数据分类：父类--对应的子类
        for (int i = 0; i < itemCats.size(); i++) {
            if (!map.containsKey(itemCats.get(i).getParentId())){
                map.put(itemCats.get(i).getParentId(),new ArrayList<>());
            }
            map.get(itemCats.get(i).getParentId()).add(itemCats.get(i));
        }

        ItemCatResult itemCatResult =new ItemCatResult();
        List<ItemCatData> itemCatDatas = new ArrayList<>();

        //顶层目录
        for (ItemCat itemCat : map.get(0L)) {
            ItemCatData itemCatData=new ItemCatData();
            itemCatData.setUrl("");
            itemCatData.setName(itemCat.getName());
            itemCatDatas.add(itemCatData);

            List<ItemCatData> itemCatDatasSecond =new ArrayList<>();

            for (ItemCat itemCat2 :  map.get(itemCat.getId())) {
                ItemCatData itemCatData2=new ItemCatData();
                itemCatData2.setUrl("");
                itemCatData2.setName(itemCat2.getName());

                itemCatDatasSecond.add(itemCatData2);

                List<ItemCatData> itemCatDatasThree = new ArrayList<>();

                for (ItemCat itemCat3 :  map.get(itemCat2.getId())) {
                    ItemCatData itemCatData3=new ItemCatData();
                    itemCatData3.setUrl("");
                    itemCatData3.setName(itemCat3.getName());
                    itemCatDatasThree.add(itemCatData3);
                }

                itemCatData2.setItems(itemCatDatasThree);

            }
           itemCatData.setItems(itemCatDatasSecond);

        }

        itemCatResult.setItemCats(itemCatDatas);

        return itemCatResult;
    }
}
